From 9b2691bdb499a3c2a136596658571056df1d42c8 Mon Sep 17 00:00:00 2001 From: Anil Madhavapeddy Date: Sat, 11 Jan 2014 23:33:25 +0000 Subject: [PATCH] libxl: ocaml: guard x86-specific functions behind an ifdef The various cpuid functions are not available on ARM, so this makes them raise an OCaml exception. Omitting the functions completely results in a link failure in oxenstored due to the missing symbols, so this is preferable to the much bigger patch that would result from adding conditional compilation into the OCaml interfaces. With this patch, oxenstored can successfully start a domain on Xen/ARM. Signed-off-by: Anil Madhavapeddy Acked-by: David Scott Acked-by: Ian Campbell --- tools/ocaml/libs/xc/xenctrl_stubs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index f5cf0edb24..ff29b4702f 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -714,6 +714,7 @@ CAMLprim value stub_xc_domain_cpuid_set(value xch, value domid, { CAMLparam4(xch, domid, input, config); CAMLlocal2(array, tmp); +#if defined(__i386__) || defined(__x86_64__) int r; unsigned int c_input[2]; char *c_config[4], *out_config[4]; @@ -742,17 +743,24 @@ CAMLprim value stub_xc_domain_cpuid_set(value xch, value domid, c_input, (const char **)c_config, out_config); if (r < 0) failwith_xc(_H(xch)); +#else + caml_failwith("xc_domain_cpuid_set: not implemented"); +#endif CAMLreturn(array); } CAMLprim value stub_xc_domain_cpuid_apply_policy(value xch, value domid) { CAMLparam2(xch, domid); +#if defined(__i386__) || defined(__x86_64__) int r; r = xc_cpuid_apply_policy(_H(xch), _D(domid)); if (r < 0) failwith_xc(_H(xch)); +#else + caml_failwith("xc_domain_cpuid_apply_policy: not implemented"); +#endif CAMLreturn(Val_unit); } @@ -760,6 +768,7 @@ CAMLprim value stub_xc_cpuid_check(value xch, value input, value config) { CAMLparam3(xch, input, config); CAMLlocal3(ret, array, tmp); +#if defined(__i386__) || defined(__x86_64__) int r; unsigned int c_input[2]; char *c_config[4], *out_config[4]; @@ -792,6 +801,9 @@ CAMLprim value stub_xc_cpuid_check(value xch, value input, value config) Store_field(ret, 0, Val_bool(r)); Store_field(ret, 1, array); +#else + caml_failwith("xc_domain_cpuid_check: not implemented"); +#endif CAMLreturn(ret); } -- 2.30.2